/******************************************************************************\
    Menu.hpp contains a class of windows menu.
    Copyright (C) 2008  Victor Vinogradov (fly3333@gmail.com)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
\******************************************************************************/

#ifndef __MENU_HPP
#define __MENU_HPP

#include <windows.h>

class cMenu
{
	HMENU Handle;
public:
	cMenu()
		: Handle( NULL )
	{
	}
	bool Load( HINSTANCE instance, LPCTSTR menu_name )
	{
		Handle = ::LoadMenu( instance, menu_name );
		return Handle != NULL;
	}
	bool LoadFromMenu( HMENU menu, int pos )
	{
		Handle = ::GetSubMenu( menu, pos );
		return Handle != NULL;
	}
	bool Destroy()
	{
		return ::DestroyMenu( Handle ) != FALSE;
	}
	operator HMENU() const
	{
		return Handle;
	}
	bool ThackPopup( UINT flags, int x, int y, HWND window )
	{
		return ::TrackPopupMenu( Handle, flags, x, y, 0, window, NULL ) != FALSE;
	}
};

#endif
